/*
 * Copyright (c) 2024. hallele, Inc All rights reserved.
 */

package cn.hallele.mc.sdk.portalcenter.common.enums;

import cn.hallele.infrastructure.data.converter.EnumConverter;
import cn.hallele.infrastructure.util.EnumUtil;
import lombok.Getter;

/**
 * DataScopeEnum
 *
 * @author anle5
 * @since 2024/5/29 23:13
 */
@Getter
public enum DataScopeEnum implements EnumConverter<Integer> {
    /**
     * 正常
     */
    ALL(0),

    /**
     * 租户及子部门数据
     */
    TENANT_AND_CHILD(1),

    /**
     * 本租户数据
     */
    TENANT(2),

    /**
     * 本人数据
     */
    SELF(3);

    /**
     * 状态标识
     */
    private final Integer code;

    DataScopeEnum(Integer code) {
        this.code = code;
    }

    /**
     * 转换成实体字段值
     *
     * @param columValue 表字段里面的值
     * @return name
     */
    @Override
    public EnumConverter<Integer> convertToEntityAttribute(Integer columValue) {
        return EnumUtil.getBy((EnumUtil.HalFunction<DataScopeEnum, Integer>) param -> param.code, columValue);
    }

    /**
     * 转换成表字段值
     *
     * @return 表字段里面的值
     */
    @Override
    public Integer convertToDatabaseColumn() {
        return this.code;
    }
}
